const mongoose = require('mongoose');

/**
 * 系统配置模型
 */
const ConfigSchema = new mongoose.Schema({
    // 配置类型
    type: {
        type: String,
        required: true,
        enum: ['customerService', 'cooperation', 'banner', 'system', 'broadcast'],
        index: true
    },
    // 配置键
    key: {
        type: String,
        required: true,
        index: true
    },
    // 配置值
    value: {
        type: mongoose.Schema.Types.Mixed,
        required: true
    },
    // 配置描述
    description: {
        type: String,
        default: ''
    },
    // 是否启用
    enabled: {
        type: Boolean,
        default: true
    },
    // 创建时间
    createdAt: {
        type: Date,
        default: Date.now
    },
    // 更新时间
    updatedAt: {
        type: Date,
        default: Date.now
    },
    // 创建者openid
    createdBy: {
        type: String,
        default: ''
    },
    // 更新者openid
    updatedBy: {
        type: String,
        default: ''
    }
});

// 复合索引：type + key 组合唯一
ConfigSchema.index({ type: 1, key: 1 }, { unique: true });

// 更新时间中间件
ConfigSchema.pre('save', function() {
    if (this.isModified() && !this.isNew) {
        this.updatedAt = new Date();
    }
});

module.exports = mongoose.model('Config', ConfigSchema);